/* -*- jde -*- */
package app.alumnoe.catalogos;

import app.alumnoe.catalogos.beans.UltimoGrado;
import app.conexion.Conexion;
import app.conexion.ConexionException;
import app.util.appException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * La clase que contiene los ultimos grados
 *
 * @author Victor Miguel Peralta Santa Anna
 * @since Diciembre 2011
 * @version 0.1
 */
public class UltimosGrados {

    /**
     * La lista de Grados que se tienen en la base de datos.
     */
    private LinkedList<UltimoGrado> ultimosGrados = new LinkedList<UltimoGrado>();

    /**
     * @return the ultimosGrados
     */
    public LinkedList<UltimoGrado> getUltimosGrados() {
        return ultimosGrados;
    }

    /**
     * Se obliga el uso a métodos estáticos.
     */
    public UltimosGrados() throws appException {
        getUltimosGradosBase();
    }

    /**
     * Método que inicializa la lista con las carreras existentes en la base de
     * datos
     *
     * @throws appException
     */
    public void getUltimosGradosBase() throws appException {
        try {
            Conexion con = new Conexion();

            ultimosGrados.clear();
            String query = "select * from ultimogrado;";

            ResultSet r;

            r = con.exec(query);

            while (r.next()) {
                int id = r.getInt("nultimogrado");
                String sgrados = r.getString("sgrado");
                getUltimosGrados().add(new UltimoGrado(id, sgrados));
            }

            con.close();

        } catch (SQLException ex) {
            System.err.println(ex);
            Logger.getLogger(Carreras.class.getName()).log(Level.SEVERE, null, ex);
            throw new appException("No se pueden recuperar los grados de la base de datos");
        } catch (ConexionException ex) {
            System.err.println(ex);
            Logger.getLogger(Carreras.class.getName()).log(Level.SEVERE, null, ex);
            throw new appException("No se pueden recuperar los grados de la base de datos");
        }

    }

    /**
     * Conexiones de prueba a la base de datos
     *
     * @param args
     * @throws ConexionException
     * @throws SQLException
     * @throws appException
     */
    public static void main(String args[]) throws ConexionException, SQLException, appException {


        UltimosGrados u = new UltimosGrados();

        LinkedList<UltimoGrado> grados = u.getUltimosGrados();

        System.out.println(grados);



    }
}
